package judesart.app.repository;

import java.util.List;

import judesart.app.domain.Artwork;
import judesart.app.domain.Exhibition;
import judesart.app.domain.ExhibitionPhoto;
import judesart.app.shared.ValidationException;

public interface ExhibitionDAO {

    Exhibition createExhibition(Exhibition exhibition)
            throws ValidationException;

    Exhibition updateExhibition(Exhibition exhibition)
            throws ValidationException;

    void deleteExhibition(Long exhibitionId);

    List<Exhibition> findExhibitions(Long artistId, int startAt, int maxElements);

    List<Long> findExhibitionIdsByArtworkId(Long artworkId);

    int countExhibitions(Long artistId);

    Exhibition findExhibitionById(Long exhibitionId);

    Exhibition addPhotoToExhibition(Exhibition exhibition, String fileName,
            String blobKey);

    Exhibition deletePhotoFromExhibition(Exhibition exhibition, Long photoId);

    String findExhibitionPhotoKeyByImageId(Long imageId);

    ExhibitionPhoto updatePhotoDescription(String photoKey, String description);

    Exhibition addArtworkToExhibition(Exhibition exhibition, Artwork artwork);

    Exhibition deleteArtworkFromExhibition(Exhibition exhibition,
            Artwork artwork);

    Exhibition addVideoToExhibition(Exhibition exhibition, String videoId);

}
